// fs.stat("../", (err, stats) => {
//   if (stats.isFile()) {
//     console.log("file");
//   } else {
//     console.log("dir");
//   }
// })
//打印目录树
const fs = require("fs");
const path = require("path");
//拿到路径参数 命令行中的第三个参数
let pathParam = process.argv[2];
//如果没有参数则默认为当前目录
if (!pathParam) pathParam = "./";

//转成绝对路径
pathParam = path.resolve(pathParam);

//层级标识
let index = 0;

//生成文件之间的树状网格符号
function makeTree(index) {
  if (index == 0) {
    return "要读取的目录：";
  }
  let str = '';
  for (let i = 0; i < index; i++){
    str += '|----';
  }
  return str;
}

 //返回路径信息
function getName(pathParam) {
  return path.parse(pathParam).base;
}

//解析路径
async function dirTree(pathParam) {
  //忽略 .git
  if (getName(pathParam) == ".git") return;
  if (fs.statSync(pathParam).isFile()) {
    //如果是文件
    console.log(makeTree(index),getName(pathParam));
  }else {
    //如果是目录
    console.log(makeTree(index), getName(pathParam));
    //进入下一级目录
    index++;
    // console.log(index);
    //读取下一级目录
    let files = fs.readdirSync(pathParam);
    files.forEach(element => {
      dirTree(path.join(pathParam,element));
    })
    //返回上级目录
    index--;
  }
  // console.log(index);
}
dirTree(pathParam);